package com.wuql.create.service;

import com.wuql.create.bean.ClassColumn;
import com.wuql.create.dao.ColumnDao;
import com.wuql.create.util.ToJavaType;
import com.wuql.create.util.UnderlineToCamelUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * @author : wuQingLiang
 * @date : 2024/3/14
 **/
@Service
public class ColumnService {
    @Autowired
    private ColumnDao columnDao;

    /**
     * 查询数据表所有字段的名称、数据类型、注释
     *
     * @param table_schema 数据库名称
     * @param tableName    数据表名称
     * @return
     */
    public List<ClassColumn> queryColumnList(String table_schema, String tableName) {
        //查询数据表所有字段的名称、数据类型、注释
        List<ClassColumn> classColumnList = columnDao.queryColumnList(table_schema, tableName);
        for (ClassColumn classColumn : classColumnList) {
            //数据库字段名称转Java驼峰名称
            String columnName = UnderlineToCamelUtils.underlineToCamel(classColumn.getColumnNameLine());
            //数据库字段类型转Java数据类型
            String dataType = ToJavaType.mysqlTypeToJavaType(classColumn.getDataType());
            classColumn.setColumnName(columnName);
            classColumn.setDataType(dataType);
        }
        return classColumnList;
    }

    /**
     * 查询数据表主键的名称、数据类型、注释
     *
     * @param table_schema 数据库名称
     * @param tableName    数据表名称
     * @return
     */
    public ClassColumn getTableKey(String table_schema, String tableName) {
        ClassColumn classColumn = columnDao.getTableKey(table_schema, tableName);
        //数据库字段名称转Java驼峰名称
        String columnName = UnderlineToCamelUtils.underlineToCamel(classColumn.getColumnNameLine());
        //数据库字段类型转Java数据类型
        String dataType = ToJavaType.mysqlTypeToJavaType(classColumn.getDataType());
        classColumn.setColumnName(columnName);
        classColumn.setDataType(dataType);
        return classColumn;
    }
}
